Laravel 5で新規アプリケーションを0から作成するときの流れ
#WIP
新規Webサービスを独りで開発・運用する際に立ちはだかった壁とそれを乗り越えた方法まとめ【個人開発】 - Qiita #個人開発
Laravel 5をつかってアプリケーションを作成したときにどのような機能を実装する際に、Laravelのどの機能を使っていったのかの概略をまとめるページ
機能については公式ドキュメントが一番まとまっているのでそちらを参照
アイデアを出す
このフェーズはめちゃ時間かかるkadoyau.icon*4
ざっくり手順
どんなアプリケーションを作成するのか決める
UIのモックをつくる
必要なAPIが漠然と見え始める
どのようなEntityがあるのか、その間の関係を大まかに洗い出す
クライアントから必要なAPIのインタフェースを考える
APIのおおまかな実装を考える
どのようなtableにどのようなデータをもつか
そのデータをアプリケーション上でどう扱うか
開発環境構築
Homestead環境でPHP開発環境を整える
1人でもWebアプリ(Laravel + React)を速く開発しつづける環境をつくる
コーディング
コーディングに入る前に効率化を考える
IDEの便利な機能があることを知っておく
例えばEntityの作成にはgetterや変数の初期化などでBoilerplate codeがたくさん出る。これを書くのはうんざりする
intelliJ IDEAを使うと自動生成できるので積極的に使う
だいたい変数の上にカーソルをおいてopt + enterをすればいい感じの選択肢が出る
PHPDocのコメントのアップデートとかも
データベース
準備
データベースをインストールしてuser/passwordを発行しておく
マイグレーションスクリプトを書いてマイグレーションする
Laravel 5のDBのmigration
レコードのCRUDをする準備
Eloquentを使うことでDBのレコードのCRUDやクエリ発行ができる
これをアプリケーション(後述)で使う
アプリケーション
アプリケーションのドメイン(ビジネスロジック)を作成する
DDDなどに従ってアプリケーションを設計する
RepositoryがEloquentを利用する形になったkadoyau.icon
クライアントとのインタフェース
APIをつくる
Laravel 5でAPIをつくる
DBスキーマ再考
APIが完成するとindexが足りないことが発覚する
発行されるクエリをLaravel Telescopeなどで眺め、composite indexをはる
テストを書く
運用
CIをする
開発フローを決める。個人開発の場合はGitHub flowが軽くてクイックで好き
CircleCIでコミット時にテストを回して
デプロイ(全世界に公開する)
アプリケーションの性質によって選べる選択肢が違う
静的サイト(functionによる動的要素を含む)の場合
下記のようなサービスを使うのが簡単
コマンド一発で即公開される。バックエンドのことを何も考えなくて良い。
Firebase Hosting
Netlify
バックエンドのあるアプリケーションの場合
VPSを借りる
Lightsail, DigitalOcean, さくら, ConoHaなど
パブリッククラウド(AWS, GCPなど)で組む
普通に組む
Dockerイメージをデプロイ
Pushしたらフルマネージドで全部やってほしい
Heroku
#個人開発